Stream processing

Lo stream processing è un paradigma di programmazione parallela di tipo SIMD che permette ad alcune applicazioni di sfruttare semplicemente una forma limitata di elaborazione parallela. Le applicazioni utilizzano delle unità funzionali come FPU o GPU senza doversi preoccupare di gestirne la sincronizzazione o la comunicazione tra le unità funzionali, sgravando il programmatore da uno dei principali problemi della programmazione parallela.

Il paradigma dello stream processing semplifica lo sviluppo dell'hardware e del software limitando le operazioni che possono essere eseguite. Questo paradigma presume di avere i dati da elaborare organizzati in gruppi (stream) e che questi possano essere elaborati applicando ad essi una serie di operazioni. Configurazioni nelle quali una serie di operazioni devono essere applicate a tutti i dati sono comuni. Spesso le operazioni vengono elaborate tramite l'utilizzo di strutture a pipeline al fine di ridurre i tempi di elaborazione e spesso vengono utilizzate delle cache on-chip al fine di ridurre gli accessi alla memoria centrale. Dato che queste strutture spesso eseguono una serie di operazioni note a priori su estesi insiemi di dati le pipeline e le cache on-chip si possono configurare al fine di ridurre/eliminare le latenze e i blocchi che normalmente si presentano nei microprocessori. Questo permette di realizzare unità con elevate prestazioni ma con delle cache di dimensioni modeste, assegnando la maggior parte dei transistor alle unità di elaborazione, cosa non possibili nei processori tradizionali che dovendo elaborare programmi strutturati in modo arbitrario necessitano di cache di grandi dimensioni e di strutture complesse per seguire il flusso del programma in esecuzione.

Durante gli anni ottanta lo stream processing è stato estesamente studiato durante lo sviluppo della programmazione dataflow. Un esempio di questi studi è il linguaggio SISAL (Streams and Iteration in a Single Assignment Language).


From Wikipedia, the free encyclopedia · View on Wikipedia

Developed by Tubidy